📜 [專欄新文章] JOYSO — 混合式去中心化交易所
✍️ Hsieh Yung-chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
JOYSO 為混合式去中心化交易所,用以太坊智能合約處理使用者帳號, 餘額, 以及撮合邏輯。中心化的撮和服務來撮合可以 match 的單子。先簡略寫一下JOYSO 的特性,後續再一一說明。
中心化撮合,鏈上結算
實時確認
近中心化交易所的使用者體驗
防止 front-running attack
Joyso 架構
流程:
使用者根據當前的掛單簿下單,若有可以撮合的單子,會由 matching server 撮合並送到區塊鏈上等待確認。而剩下的餘額會轉為相對應的買/賣單,回到掛單簿上。
2. 如果沒有可以撮合的單子,這個掛單會停留在掛單簿上,等待有緣人掛單撮合。
細節:
由於 JOYSO 可以確定 matching server 每筆撮合一定會上鏈。所以會實時更新掛單簿,可以讓使用者不用等待區塊確認直接做下一筆交易。
也因為由 matching server 負責撮合,所以不會像其他去中心交易所一樣會有多筆撮合同時搶單的狀況,同時也確保礦池不會影響交易順序,因為只會有一筆合法的撮合。
matching server 會跟據區塊鏈上智能合約以及當下 JOYSO 已撮合卻未上鏈的資訊,還有已經下單卻未被撮合的資訊來分析使用者下單是否合法。若合法則會接受該筆掛單。
除了把鏈上鏈下當下資訊整合算出來的合約狀態來接受掛單之外,我們還要確保在交易未確認前,智能合約的狀態沒有受到不可預期的更新。更細一點的說法,因為我們是交易所,我們要防止的是當智能合約在做交易時,其中一方使用者的餘額不足。所以我們要確保交易未確認前,智能合約的狀態沒有受到不可預期的餘額”減少”。所以我們在智能合約裡多做一層權限管控,只能由 JOYSO 認定的地址對合約發起這些交易。
即使只有 JOYSO 可以發起這些交易,智能合約仍會檢查 JOYSO 送到合約上的內容是否含有該使用者的簽章,會由這個方法來確認使用者簽過章接受由 JOYSO 幫忙撮單的結果。
除了驗證使用者簽章之外,智能合約還會檢查該單的狀態,不會亂扣使用者的餘額。比如,當一筆掛單為”賣 JOY 10 個,每個為 1 Ether”,那智能合約最多只會交易掉該使用者10個 JOY,並且每個 JOY 的金額不會“小於” 1 Ether。反之若掛單為“買 JOY 10 個,每個為 1 Ether”,那智能合約最多只會交易掉該使用者 10 個 Ether,並且每個 JOY 的收購金額不會“大於” 1 Ether。
使用者仍可直接對智能合約出金,智能合約若接收某使用者值貼提領的要求,會給 JOYSO 一定的時間完成在未確認列表裡與該使用者有關的交易。而 JOYSO 在接收到智能合約送出的 event 之後也會下假該使用者的掛單,以免出金後影響交易正確性。
Joyso 智能合約概觀
其他
從架構圖來看,前半部是跟中心化伺服器一樣,會需要標準的伺服器服務以向使用者提供好的體驗。後半為去中心化的部分,用智能合約確保使用者權益。惟在送上區塊鏈的部分,以太坊因為每個區塊有 gas 使用上限,且 15 秒才產生一個區塊。現在去中心化交易所已佔掉以太坊大部分的交易,若再更多的話,往後的吞吐量是不夠的。
相比於其他完全去中心化系統,JOYSO 伺服器以避免了錯勿的撮單會浪費 gas。除此之外,降低每筆撮合所需要的 gas,以及降低需要上鏈撮合的交易數量,是我們嘗試要增加 JOYSO 合約吞吐量的兩個方式。
為了要降低每筆撮合所需要的 gas 量,JOYSO 每筆撮合裡面會有多個掛單。只要符合使用者利益的可以同時撮合,相比於其他去中心化交易所每個撮合都是兩個掛單,當無法完全撮合會需要多餘的交易。另外,由於交易由 JOYSO 伺服器負責送出,我們可以自己計算event的通知以及內容,不用寫在區塊鏈上。最後是區塊鏈上空間的共用,我們盡可能壓縮智能合約結帳所需的資料。
安全性
Joyso 為中心化撮合,所以這邊要特別分析中心化撮合會對使用者的影響。
因為智能合約上的規則,JOYSO 無法在沒有取得使用者同意下,隨意亂動使用者的餘額。即使有使用者的簽章,智能合約也會檢查簽章內容,不會發生使用者沒允許的交易。
就像一般交易所一樣,所有的掛單以及未確認交易都會公布讓所有使用者知道。當有兩筆掛單可以撮合,大家都會看到,所以不用擔心 JOYSO 會不幫某些地址撮單。
JOYSO “可以” 屏蔽某些特定 address 的掛單,若是這個狀況,該 address 仍可以直接向智能合約出金。
JOYSO “可以” 做套利,但因為所有掛單布都會公開,且交易成功會實時回覆,如同中心化交易所一樣。除此之外,即使 JOYSO 成功套利,智能合約仍確保該使用者買賣單價不會劣於當初使用者所簽的價位。(註:套利是指當現在有一個掛賣單為1 Joy換1 Ether,若此時有使用者掛買單用1 Ether換0.5 Joy,JOYSO 注意到這個狀況而產生兩個單子,一為買單用1 Ether換1 Joy, 另一為賣單 0.5 Joy 換 1 Ether,如此 JOYSO 可以從中獲利 0.5 Joy)。
總結
JOYSO為混合式去中心化交易所,提供近乎中心化交易所的使用體驗。並由智能合約保障使用者資產,不會因為被駭或惡意倒閉而造成損失。
JOYSO — 混合式去中心化交易所 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌